<HTML>
<HEAD>
<!-- This HTML file has been created by texi2html 1.29
     from news4.1.tnf on 19 December 2010 -->

<TITLE>New Features of Eli Version 4.1 - Specification Module Library</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000" BACKGROUND="gifs/bg.gif">
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0" VALIGN=BOTTOM>
<TR VALIGN=BOTTOM>
<TD WIDTH="160" VALIGN=BOTTOM>
<A HREF="http://eli-project.sourceforge.net/">
<IMG SRC="gifs/elilogo.gif" BORDER=0>
</A>&nbsp;
</TD>
<TD WIDTH="25" VALIGN=BOTTOM>
<img src="gifs/empty.gif" WIDTH=25 HEIGHT=25>
</TD>
<TD ALIGN=LEFT WIDTH="475" VALIGN=BOTTOM>
<A HREF="index.html"><IMG SRC="gifs/title.png" BORDER=0></A>
</TD>
<!-- |DELETE FOR SOURCEFORGE LOGO|
<TD>
<a href="http://sourceforge.net/projects/eli-project">
<img
  src="http://sflogo.sourceforge.net/sflogo.php?group_id=70447&amp;type=13"
  width="120" height="30"
  alt="Get Eli: Translator Construction Made Easy at SourceForge.net.
    Fast, secure and Free Open Source software downloads"/>
</a>
</TD>
|DELETE FOR SOURCEFORGE LOGO| -->
</TR>
</TABLE>

<HR size=1 noshade width=785 align=left>
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0>
<TR>
<TD VALIGN=TOP WIDTH="160">
<h4>General Information</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="index.html">Eli: Translator Construction Made Easy</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gindex_1.html#SEC1">Global Index</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="faq_toc.html" >Frequently Asked Questions</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Tutorials</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="EliRefCard_toc.html">Quick Reference Card</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="novice_toc.html">Guide For new Eli Users</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="news_toc.html">Release Notes of Eli</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="nametutorial_toc.html">Tutorial on Name Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="typetutorial_toc.html">Tutorial on Type Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Reference Manuals</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ui_toc.html">User Interface</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="pp_toc.html">Eli products and parameters</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lidoref_toc.html">LIDO Reference Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Libraries</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lib_toc.html">Eli library routines</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="modlib_toc.html">Specification Module Library</a></td></tr>
</table>

<h4>Translation Tasks</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lex_toc.html">Lexical analysis specification</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="syntax_toc.html">Syntactic Analysis Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="comptrees_toc.html">Computation in Trees</a></td></tr>
</table>

<h4>Tools</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lcl_toc.html">LIGA Control Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="show_toc.html">Debugging Information for LIDO</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gorto_toc.html">Graphical ORder TOol</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="fw_toc.html">FunnelWeb User's Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ptg_toc.html">Pattern-based Text Generator</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="deftbl_toc.html">Property Definition Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="oil_toc.html">Operator Identification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="tp_toc.html">Tree Grammar Specification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="clp_toc.html">Command Line Processing</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="cola_toc.html">COLA Options Reference Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="idem_toc.html">Generating Unparsing Code</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="mon_toc.html">Monitoring a Processor's Execution</a> </td></tr>
</table>

<h4>Administration</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="sysadmin_toc.html">System Administration Guide</a> </td></tr>
</table>

<HR WIDTH="100%">
<A HREF="mailto:eli-project-users@lists.sourceforge.net">
<IMG SRC="gifs/button_mail.gif" BORDER=0 ALIGN="left"></A>
<A HREF="index.html"><IMG SRC="gifs/home.gif" BORDER=0 ALIGN="right"></A>

</TD>
<TD VALIGN=TOP WIDTH="25"><img src="gifs/empty.gif" WIDTH=25 HEIGHT=25></TD>

<TD VALIGN=TOP WIDTH="600">
<H1>New Features of Eli Version 4.1</H1>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.1_1.html"><IMG SRC="gifs/prev.gif" ALT="Previous Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.1_3.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.1_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
<H1><A NAME="SEC7" HREF="news4.1_toc.html#SEC7">Specification Module Library</A></H1>
<P>
Many library modules provide some symbol role, e.g. <CODE>RootScope</CODE>, 
that has to be inherited to a tree grammar symbol which is usually the root of
the tree grammar. These moduls are modified such that those
root roles are automatically associated to <CODE>ROOTCLASS</CODE>,
which stands for the tree grammar root.
See  <A HREF="news4.1_1.html#SEC4">Grammar Root Symbol</A>.
<A NAME="IDX22"></A>
<A NAME="IDX21"></A>
<P>
All name analysis modules have been adapted to the modifications
of the environment module. These changes should not invalidate
existing uses of the modules.
<P>
See  <A HREF="name_toc.html">Name Analysis Library of Specification Module Library: Name Analysis</A>.
<P>
<H2><A NAME="SEC8" HREF="news4.1_toc.html#SEC8">Environment Module Enhancements</A></H2>
<A NAME="IDX23"></A>
<A NAME="IDX24"></A>
<A NAME="IDX25"></A>
<A NAME="IDX26"></A>
<P>
The environment module <CODE>envmod.[ch]</CODE> has been augmented by
functions and macros that further support name analysis for object-oriented
languages, i.e. name analysis with scopes that inherit from other scopes.
<P>
The module was also augmented by functions that return a binding
instead of a definition table key. A binding is a triple
<CODE>(int idn, Environment sc, DefTableKey key)</CODE>, for an identifier
<CODE>idn</CODE> that is bound to <CODE>key</CODE> in the scope <CODE>sc</CODE>.
<P>
A full description of the interface of the module is given in
the name analysis part of the module library documentation.
(It has been moved there from its previous place in the documentation
of Eli library routines.).
<P>
See  <A HREF="name_8.html#SEC20">Environment Module of Specification Module Library: Name Analysis</A>.
<P>
Existing uses of the module should not be invalidated by these
changes.
<P>
<H2><A NAME="SEC9" HREF="news4.1_toc.html#SEC9">Module for Testing Name Analysis</A></H2>
<A NAME="IDX27"></A>
<A NAME="IDX28"></A>
<P>
A module is provided which augments the specified processor such that it
produces output that makes the results of name analysis visible.
For each identifier occurrence that has one of the identifier
roles of the name analysis modules a line of the form
<PRE>
   m in line 23 bound in line 4 of scope in line 3
</PRE>
is written to the standard output file.
In general it is sufficient just to instantiate the module
<CODE>ShowBinding</CODE> with the same instance parameter as used for the 
basic name analysis module.
<P>
See  <A HREF="name_7.html#SEC19">Name Analysis Test of Specification Module Library: Name Analysis</A>.
<P>
<H2><A NAME="SEC10" HREF="news4.1_toc.html#SEC10">Module <CODE>ChainPtg</CODE> obsolete</A></H2>
<A NAME="IDX29"></A>
<P>
Module <CODE>ChainPtg</CODE> was obsolete with Version 3.6 of the Eli-System.
This module has now been removed without replacement.
<P>
To collect PTG-Nodes for output, use <CODE>CONSTITUENTS</CODE>-Construct in
Combination with the Pattern <CODE>Seq</CODE> of the new Module <CODE>PtgCommon</CODE>.
<P>
See  <A HREF="ptg_5.html#SEC17">Using LIDO CONSTITUENTS of Pattern-Based Text Generator</A>,
for details.
<P>
<H2><A NAME="SEC11" HREF="news4.1_toc.html#SEC11">Module <CODE>Sort</CODE> added</A></H2>
<A NAME="IDX30"></A>
<P>
A generic sorting module has been added to the library.
This module can be instantiated for any data type, and sorts an array whose
elements are of that data type.
A user-supplied function defines the collating sequence, so that any
arbitrary ordering is possible.
The sort is done in place, so that the array after the sort is a
permutation of the array before the sort.
<P>
See  <A HREF="problems_6.html#SEC6">Sorting Elements of an Array of Specification Module Library: Common Problems</A>, for details.
<P>
<A NAME="IDX31"></A>
<H2><A NAME="SEC12" HREF="news4.1_toc.html#SEC12">Module <CODE>Separator</CODE> added</A></H2>
<P>
This is a new PTG output module that allows separators to be inserted
into the output stream depending on the last string printed and the next
string to be printed.
<P>
See  <A HREF="output_8.html#SEC8">Introduce Separators in PTG Output of Specification Module Library: Generating Output</A>, for details.
<P>
<H2><A NAME="SEC13" HREF="news4.1_toc.html#SEC13">Instanciation of Modules with Filenames</A></H2>
<A NAME="IDX32"></A>
<A NAME="IDX33"></A>
<A NAME="IDX34"></A>
<A NAME="IDX35"></A>
<P>
To instanciate modules, that require filenames as their arguments from 
within a <CODE>.fw</CODE>-files previously required specification of the
<CODE>.fw</CODE>-file generating it. This is now no longer required. 
<P>
For example, to instanciate the <CODE>PreDefId</CODE>-Module with a
filename <CODE>predef.d</CODE>, the following example now works within and 
outside from a <CODE>.fw</CODE> specification:
<P>
<PRE>
   $/Name/PreDefId.gnrc +referto=(Predef.d) :inst
</PRE>
<P>
See  <A HREF="name_3.html#SEC6">Predefined Identifiers of Specification Module Library: Name Analysis</A>, and  `Operator Identification' of <CITE>Specification Module Library: Type Analysis</CITE>, for more information.
<P>
<HR size=1 noshade width=600 align=left>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.1_1.html"><IMG SRC="gifs/prev.gif" ALT="Previous Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.1_3.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.1_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
</TD>
</TR>
</TABLE>

</BODY></HTML>
